/**
 * This is my code.
 *
 * $Id$
 */
package fi.jab.esb.config.xml;

import org.eclipse.emf.common.util.EList;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Listener</b></em>'.
 * <!-- end-user-doc -->
 *
 * <!-- begin-model-doc -->
 * 
 * 				A listener is a listener or a gateway. The listener defines to which bus the service is listening. The service can
 * 				simultaneniously listen to multiple buses.
 * 			
 * <!-- end-model-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link fi.jab.esb.config.xml.Listener#getProperty <em>Property</em>}</li>
 *   <li>{@link fi.jab.esb.config.xml.Listener#getBusidref <em>Busidref</em>}</li>
 *   <li>{@link fi.jab.esb.config.xml.Listener#isIsGateway <em>Is Gateway</em>}</li>
 *   <li>{@link fi.jab.esb.config.xml.Listener#getMaxThreads <em>Max Threads</em>}</li>
 *   <li>{@link fi.jab.esb.config.xml.Listener#getName <em>Name</em>}</li>
 * </ul>
 * </p>
 *
 * @see fi.jab.esb.config.xml.XmlPackage#getListener()
 * @model extendedMetaData="name='listener' kind='elementOnly'"
 * @generated
 */
public interface Listener extends EObject
{
  /**
   * Returns the value of the '<em><b>Property</b></em>' containment reference list.
   * The list contents are of type {@link fi.jab.esb.config.xml.PropertyType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * <!-- begin-model-doc -->
   * A simple name-value pair.
   * <!-- end-model-doc -->
   * @return the value of the '<em>Property</em>' containment reference list.
   * @see fi.jab.esb.config.xml.XmlPackage#getListener_Property()
   * @model containment="true"
   *        extendedMetaData="kind='element' name='property' namespace='##targetNamespace'"
   * @generated
   */
  EList<PropertyType> getProperty();

  /**
   * Returns the value of the '<em><b>Busidref</b></em>' attribute.
   * The default value is <code>"$not-defined$"</code>.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * <!-- begin-model-doc -->
   * 
   * 					A reference to an existing bus, as defined in the 'buses' section of this jbossesb config.
   * 				
   * <!-- end-model-doc -->
   * @return the value of the '<em>Busidref</em>' attribute.
   * @see #isSetBusidref()
   * @see #unsetBusidref()
   * @see #setBusidref(String)
   * @see fi.jab.esb.config.xml.XmlPackage#getListener_Busidref()
   * @model default="$not-defined$" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.String"
   *        extendedMetaData="kind='attribute' name='busidref'"
   * @generated
   */
  String getBusidref();

  /**
   * Sets the value of the '{@link fi.jab.esb.config.xml.Listener#getBusidref <em>Busidref</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Busidref</em>' attribute.
   * @see #isSetBusidref()
   * @see #unsetBusidref()
   * @see #getBusidref()
   * @generated
   */
  void setBusidref(String value);

  /**
   * Unsets the value of the '{@link fi.jab.esb.config.xml.Listener#getBusidref <em>Busidref</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #isSetBusidref()
   * @see #getBusidref()
   * @see #setBusidref(String)
   * @generated
   */
  void unsetBusidref();

  /**
   * Returns whether the value of the '{@link fi.jab.esb.config.xml.Listener#getBusidref <em>Busidref</em>}' attribute is set.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return whether the value of the '<em>Busidref</em>' attribute is set.
   * @see #unsetBusidref()
   * @see #getBusidref()
   * @see #setBusidref(String)
   * @generated
   */
  boolean isSetBusidref();

  /**
   * Returns the value of the '<em><b>Is Gateway</b></em>' attribute.
   * The default value is <code>"false"</code>.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * <!-- begin-model-doc -->
   * 
   * 					true if the listener is a gateway. A gateway is an ESB-Unware listener, while a listener is ESB-aware and as such
   * 					expects jbossesb formatted messages.
   * 				
   * <!-- end-model-doc -->
   * @return the value of the '<em>Is Gateway</em>' attribute.
   * @see #isSetIsGateway()
   * @see #unsetIsGateway()
   * @see #setIsGateway(boolean)
   * @see fi.jab.esb.config.xml.XmlPackage#getListener_IsGateway()
   * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
   *        extendedMetaData="kind='attribute' name='is-gateway'"
   * @generated
   */
  boolean isIsGateway();

  /**
   * Sets the value of the '{@link fi.jab.esb.config.xml.Listener#isIsGateway <em>Is Gateway</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Is Gateway</em>' attribute.
   * @see #isSetIsGateway()
   * @see #unsetIsGateway()
   * @see #isIsGateway()
   * @generated
   */
  void setIsGateway(boolean value);

  /**
   * Unsets the value of the '{@link fi.jab.esb.config.xml.Listener#isIsGateway <em>Is Gateway</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #isSetIsGateway()
   * @see #isIsGateway()
   * @see #setIsGateway(boolean)
   * @generated
   */
  void unsetIsGateway();

  /**
   * Returns whether the value of the '{@link fi.jab.esb.config.xml.Listener#isIsGateway <em>Is Gateway</em>}' attribute is set.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return whether the value of the '<em>Is Gateway</em>' attribute is set.
   * @see #unsetIsGateway()
   * @see #isIsGateway()
   * @see #setIsGateway(boolean)
   * @generated
   */
  boolean isSetIsGateway();

  /**
   * Returns the value of the '<em><b>Max Threads</b></em>' attribute.
   * The default value is <code>"1"</code>.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * <!-- begin-model-doc -->
   * The number of threads which will be started for this listener.
   * <!-- end-model-doc -->
   * @return the value of the '<em>Max Threads</em>' attribute.
   * @see #isSetMaxThreads()
   * @see #unsetMaxThreads()
   * @see #setMaxThreads(int)
   * @see fi.jab.esb.config.xml.XmlPackage#getListener_MaxThreads()
   * @model default="1" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Int"
   *        extendedMetaData="kind='attribute' name='maxThreads'"
   * @generated
   */
  int getMaxThreads();

  /**
   * Sets the value of the '{@link fi.jab.esb.config.xml.Listener#getMaxThreads <em>Max Threads</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Max Threads</em>' attribute.
   * @see #isSetMaxThreads()
   * @see #unsetMaxThreads()
   * @see #getMaxThreads()
   * @generated
   */
  void setMaxThreads(int value);

  /**
   * Unsets the value of the '{@link fi.jab.esb.config.xml.Listener#getMaxThreads <em>Max Threads</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #isSetMaxThreads()
   * @see #getMaxThreads()
   * @see #setMaxThreads(int)
   * @generated
   */
  void unsetMaxThreads();

  /**
   * Returns whether the value of the '{@link fi.jab.esb.config.xml.Listener#getMaxThreads <em>Max Threads</em>}' attribute is set.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return whether the value of the '<em>Max Threads</em>' attribute is set.
   * @see #unsetMaxThreads()
   * @see #getMaxThreads()
   * @see #setMaxThreads(int)
   * @generated
   */
  boolean isSetMaxThreads();

  /**
   * Returns the value of the '<em><b>Name</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * <!-- begin-model-doc -->
   * The logical name of the listener.
   * <!-- end-model-doc -->
   * @return the value of the '<em>Name</em>' attribute.
   * @see #setName(String)
   * @see fi.jab.esb.config.xml.XmlPackage#getListener_Name()
   * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
   *        extendedMetaData="kind='attribute' name='name'"
   * @generated
   */
  String getName();

  /**
   * Sets the value of the '{@link fi.jab.esb.config.xml.Listener#getName <em>Name</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Name</em>' attribute.
   * @see #getName()
   * @generated
   */
  void setName(String value);

} // Listener
